#pragma once

#include <iostream>
#include <chrono>
#include <ctime>
#include <string>
#include <mutex>
#include <map>
#include <unordered_map>
#include <vector>
#include <functional>
#include "../redis_client.hpp"

using namespace std;

namespace shine
{
    namespace redis
    {
        typedef sync_client* sync_client_t;
        typedef async_client* async_client_t;

        class sync_graph{
        public:
            sync_graph(sync_client_t client)
            {
                set_sync_client(client);
            }
            virtual ~sync_graph(){

            }

			template<class ...ARGS>
			bool QUERY(const string &key, std::vector<string> &arr, ARGS ... args) {
				SYNC_CALL(false, "GRAPH.QUERY", key, args...);

				result_parse::array_reply(SYNC_DATA_VALUE, arr);

				return SYNC_HEADER_VALUE != "-1";
			}


        private:
            SHINE_GEN_MEMBER_GETSET(sync_client_t, sync_client, = nullptr);
        };

    }
}
